package constructor;


public class ConstructorExample {

    // 字段
    private String name;
    private int age;

    // 无参构造方法
    public ConstructorExample() {
        this.name = "Unknown";
        this.age = 0;
        System.out.println("无参构造方法被调用");
    }

    // 带参构造方法
    public ConstructorExample(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println("带参构造方法被调用");
    }

    // 使用 this 关键字调用另一个构造方法（构造方法链）
    public ConstructorExample(String name) {
        this(name, 0); // 调用带参构造方法
        System.out.println("单参数构造方法被调用");
    }

    // 获取字段的方法
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    // 设置字段的方法
    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public static void main(String[] args) {
        // 使用无参构造方法创建对象
        ConstructorExample example1 = new ConstructorExample();
        System.out.println("Name: " + example1.getName() + ", Age: " + example1.getAge());

        // 使用带参构造方法创建对象
        ConstructorExample example2 = new ConstructorExample("Alice", 30);
        System.out.println("Name: " + example2.getName() + ", Age: " + example2.getAge());

        // 使用单参数构造方法创建对象
        ConstructorExample example3 = new ConstructorExample("Bob");
        System.out.println("Name: " + example3.getName() + ", Age: " + example3.getAge());
    }
}
